///*
// * CS_BUY_ITEM_WITH_ZEN_TO_USE.cpp
// *
// *  Created on: 2013. 5. 28.
// *      Author: the2
// */
//
//#include "../../Command.h"
//#include "../../User.h"
//#include "../../NResource/Static.h"
//#include "../../NLogic/Item.h"
//#include "../../NLogic/Function.h"
//#include "../../NLogic/Bag.h"
//#include "../../NLogic/VirtualCurrency.h"
//
//namespace ProjectZ { namespace NCommand {
//
//void SendPacket_CS_BUY_ITEM_WITH_ZEN_TO_USE(User * pUser, int16_t res)
//{
//
//	::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
//
//	*pAck << res << pUser->GetVirtualCurrency()->GetZen();
//
//	pAck->MakePacket(CMD_SC_BUY_ITEM_WITH_ZEN_TO_USE);
//
//	pUser->Send(pAck);
//}
//
//void Command::CS_BUY_ITEM_WITH_ZEN_TO_USE(User * pUser,
//		::Network::Packet * pPacket) {
//
//	PREPARE_PACKET;
//
//	uint16_t chargeSeq 	= 0;	// 유료 아이템 Seq
//	uint32_t useCount	= 0;	// 사용 갯수
//
//	*pPacket >> chargeSeq >> useCount;
//
//	DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : user_seq=%d, charge_seq=%d, use_count=%d", pUser->GetUserInfo().userseq, chargeSeq, useCount);
//
//	NResource::ChargeItemData::Flyweight * pFly =
//			NResource::Static::InstancePtr()->GetChargeItem()->GetFly(pUser, chargeSeq);
//
//	if (pFly == NULL)
//	{
//		DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : pFly is NULL!!!");
//		SendPacket_CS_BUY_ITEM_WITH_ZEN_TO_USE(pUser, ACK_UNKNOWN_ERROR);
//		return;
//	}
//
//	DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : user_seq=%d, charge_seq=%d, tid=%d, sheet=%d, quantity=%d, vc_index=%d",
//			pUser->GetUserSeq(), chargeSeq, pFly->_TID, pFly->_SHEET, pFly->_QUANTITY, pFly->_VC_INDEX);
//
//	// 유저의 보유ZEN 확인
//	if ((pUser->GetVirtualCurrency()->GetZen() - pFly->_PRICE) < 0)
//	{
//		DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : Not Enought ZEN!!");
//		SendPacket_CS_BUY_ITEM_WITH_ZEN_TO_USE(pUser, ACK_NOT_ENOUGH_ZEN);
//		return;
//	}
//
//	// 아이템 수량에서 요청 수량 뺀 값을 입력해야 함.
//	int remainCount = pFly->_QUANTITY - useCount;
//
//	// 아이템 데이터 생성
//	// 아이템 즉시 사용 후 수량이 남아 있는 경우 Item테이블에 저장
//	if (remainCount > 0)
//	{
//		NLogic::Item::Data clsData;
//		NResource::Static::InstancePtr()->GetItemResource()->SetItemFromXLS(pUser, clsData, pFly->_SHEET, pFly->_TID, remainCount);
//
//		NLogic::Bag * pBag = pUser->GetBag(static_cast<INVEN_BAG_TYPE>(clsData.bag_type));
//		if (NULL == pBag)
//		{
//			DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : pBag is NULL!!");
//			return;
//		}
//
//		bool bBagFull = false;
//		NLogic::Item * pItem = pBag->AddItemWithData(clsData, bBagFull);
//		if (NULL == pItem)
//		{
//			DEBUGLOG("CS_BUY_ITEM_WITH_ZEN_TO_USE : pItem is NULL!!");
//			return;
//		}
//	}
//
//	// VC 처리
//	NLogic::NFunction::VCProcess(pUser, pFly->_VC_INDEX);
//
//	// 응답
//	SendPacket_CS_BUY_ITEM_WITH_ZEN_TO_USE(pUser, ACK_OK);
//}
//
//} /*NCommand*/ } /*ProjectZ*/
